#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
using namespace std;
typedef long long ll;
typedef unsigned long long Ull;
unordered_map<int,int> h;
int turn(int t,int i)
{
	t=t^(1<<i);
	if(i%5<4) t=t^(1<<(i+1));
	if(i<20) t=t^(1<<i+5);
	if(i>=5) t=t^(1<<i-5);
	if(i%5) t=t^(1<<i-1);
	return t;
}
void bfs()
{
	int st=(1<<25)-1;
	queue<int> q;
	q.push(st);
	h[st]=1;
	while(q.size())
	{
		int t=q.front();
		q.pop();
		if(h[t]==7)
		{
			break;
		}
		for(int i=0;i<25;i++)
		{
			int t1;
			t1=turn(t,i);
			if(!h[t1])
			{
				h[t1]=h[t]+1;
				q.push(t1);
			}
		}
	}
	
}
int main()
{
	bfs();
	int n;
	scanf("%d",&n);
	
	while(n--)
	{
		string s;
		string s1;
		for(int i=0;i<5;i++)
		{
			cin>>s1;
			s+=s1;
		}
		int sum=0;
		for(int i=0;i<25;i++)
		{
			if(s[i]=='1')
			sum=sum+(1<<i);
		}
		printf("%d\n",h[sum]-1);
	}
	

	return 0;
}

